#if !defined(READ_OPTIONS_H)
#define READ_OPTIONS_H


#include <boost/program_options/options_description.hpp>
#include <boost/program_options/value_semantic.hpp>
#include "std_options.h"
#include "read_options.h"
#include <vector>
#include <string>


//________________________________________________________________________________________
// 
// 		read_options
//________________________________________________________________________________________
enum eOPERATIONS {ePASS_THROUGH, eEXPAND, 
					eBRACKET, eSUMMARISE, 
					eCLOSE_NEIGHBOURS, eREMOVE_SHORT, eUNION, eINTERSECT, eSUBTRACT};


class prog_options : public t_std_options
{
private:
public:
	prog_options():
		t_std_options("Applies various operations to intervals.\n",
						" --input_file INTERVALS --output_file INTERVALS \n"
						" --operation expand|bracket|summarise|union|\n"
						"             intersect|difference|join_neighbours|\n"
						"             remove_short|none [OPTIONS]"
						, "1.0 24/01/2011", true),

		operation(ePASS_THROUGH),
		offset(0),
		zero_based_input(false),
		zero_based_input2(false),
		zero_based_output(false)
	{}
	std::string		name_regex;
	std::string		name_sub;
	std::string		input_file_name;
	std::string		input_file_name2;
	std::string		output_file_name;
	std::string		contig_sizes_file_name;
	eOPERATIONS		operation;
	unsigned		offset;
	bool 			zero_based_input;
	bool			zero_based_input2;
	bool 			zero_based_output;
};

bool read_options(prog_options& opt, int argc, char *argv[]);
#endif
